package com.xmut.mall.product.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.xmut.mall.product.searchparam.ManagerSkuComponentsSearchParam;
import com.xmut.mall.product.searchparam.SkuComponentsSearchParam;
import com.xmut.mall.product.searchparam.SkuPageSearchParam;
import com.xmut.mall.product.utils.PageUtils;
import com.xmut.mall.product.entity.SkuInfoEntity;
import com.xmut.mall.product.utils.RespBean;
import com.xmut.mall.product.vo.EditSkuVo;
import com.xmut.mall.product.vo.PageVO;

import java.util.List;
import java.util.Map;

/**
 * sku信息
 *
 * @author 1912120131suntingxing
 * @email 1192081604@qq.com
 * @date 2022-07-14 00:45:33
 */
public interface SkuInfoService extends IService<SkuInfoEntity> {

    PageUtils queryPage(Map<String, Object> params);

    void saveSkuInfo(SkuInfoEntity skuInfoEntity);

    PageUtils queryPageByCondition(Map<String, Object> params);

    /**
     * 通过spuid查出所有的sku实体信息
     * @param spuId
     * @return
     */
    List<SkuInfoEntity> getSkuBySpuId(Long spuId);

    /**
     * 获取sku的分页数据
     * @param vo
     * @param searchParam
     * @return
     */
    RespBean getSkuByPage(PageVO vo, SkuPageSearchParam searchParam);

    /**
     * 编辑Sku
     * @param vo
     * @return
     */
    RespBean editSku(EditSkuVo vo);

    /**
     * 删除Sku
     * @param skuId
     * @return
     */
    RespBean deleteSku(Long skuId);

    /**
     * 根据参数获取Sku赠品
     * @param params
     * @return
     */
    RespBean getSkuGiftByParams(Map<String, Object> params);

    /**
     * 获取sku选择组件的分页数据
     * @param vo
     * @param param
     * @return
     */
    RespBean getSkuComponentsDataByPage(PageVO vo, SkuComponentsSearchParam param);

    /**
     * 根据参数获取商城官方管理端的sku礼物信息
     * @param params
     * @return
     */
    RespBean getManagerSkuGiftByParams(Map<String, Object> params);

    /**
     * 获取商城官方管理端的平台券所用的sku选择组件的分页数据
     * @param vo
     * @param param
     * @return
     */
    RespBean getManagerSkuComponentsDataByPage(PageVO vo, ManagerSkuComponentsSearchParam param);

    /**
     * 商品详情页点击立即购买 也就是BuyNow模式获取商品交易详情
     * @param param
     * @return
     */
    RespBean getGoodPayDetailTypeBuyNow(Map<String, Object> param);
}

